fn main() {
    println!("Hello, world!");
}


#[test]
fn test1() {
    // 断言
    assert!(1 == 1, "bbbb");
    assert!(1 == 2);

    assert!(1 == 1, "cccc");
}

#[test]
fn test2() {
    // 要求参数实现了Debug 和PartialEq 这2个Trait
    assert_eq!("a1", "a2");

    assert_ne!("a1", "a2")
}

// 断言增加自定义错误信息

#[test]
fn test3() {
    // 要求参数实现了Debug 和PartialEq 这2个Trait
    assert_eq!("a1", "a2", "2个参数不相等");

    assert_ne!("a1", "a2", "2个参数相等");
}


// 检查是否发生panic
// 函数上增加 [should_panic] , 发生 panic 测试通过， 没有panic ， 测试失败
// expected 可以指定panic的msg ， 完全匹配 测试 通过， 否则测试失败
#[test]
#[should_panic(expected = "index out of bounds: the len is 2 but the index is 10 ")]
fn test4() {
    let array = vec![11, 2];

    let num = array[10];
}


// 测试中使用Result
#[test]
fn test5() -> Result<(), String> {
    if 2 + 4 == 4 {
        Ok(())
    } else {
        Err("error....".to_string())
    }
}




// 控制测试

// cargo test 
